perm filename DPYIT.F4[RST,LCS] blob sn#163325 filedate 1975-06-10 generic text, type T, neo UTF8
00100	C**** SUBRS LINES, RDRAW, UNPACK, GRIDS, SHIFT, SHIFTX, REPACK
00200		SUBROUTINE LINES(A,B,L)
00300		COMMON /RZ/RSZ,IPLT,RJB,CENTR
00400		COMMON /FL/C,D,NQ,RZ,IXRX,XGP,RXGP
00500		DATA XGP/1200.0/,RX/1.0/
00600		COMMON/MN/M,N
00700	C  SET XGP TO 1245.0 FOR MARGIN IN XEROX COPIES
00800	23	IF(IPLT)GO TO 2
00900		M=A*RSZ
01000		N=B*RSZ
01100		IF(L.EQ.3)GO TO 1
01200		CALL AVECT(M,N)
01300		RETURN
01400	1	CALL AIVECT(M,N)
01500		RETURN
01600	CC	DIS=RSZ*1.7
01700	CC	RHT=RSZ*1.7
01800	2	IF(IXRX.EQ.0)GO TO 9
01900	CC	M=-B*RHT-BX+RXGP
02000		AX=-B*RSZ
02100		BX=RX*A*RSZ+XGP
02200	CC	N=RX*A*DIS+XGP+AX
02300		GO TO 8
02400	9	AX=A*RSZ
02500		BX=B*RSZ
02600	CC9	M=A*DIS+AX
02700	CC	N=B*RHT+BX
02800	8	X=.5
02900		IF(AX)X=-X
03000		Y=.5
03100		IF(BX)Y=-Y
03200	C  A AND B ARE FOR ROUND-OFF
03300		M=AX+X	
03400		N=BX+Y
03500		CALL PLOT(M,N,L)
03600		END
03700	
03800		SUBROUTINE RDRAW(I,JJ,IJ)
03900	C   TO X,Y INTO ONE WORD
04000		DIMENSION IJ(1)
04010		COMMON /RZ/RSZ,IPLT,RJB,CENTR
04100		COMMON/LL/L
04200		COMMON/ZN/SCLEF(400,2),DDD
04300		COMMON/MN/M,N
04400		DO 2 K=I,JJ
04500		CALL UNPACK(K,IA,IB,IJ)
04600		A=IA+RJB
04700		B=IB+CENTR
04800		IF(K.EQ.I)GO TO 3
04820		IF(L.LT.100000000)GO TO 1
04840	3	L=3
04900	1	CALL LINES(A,B,L)
05000		SCLEF(K,1)=M
05100	2	SCLEF(K,2)=N
05300		END
05400	
05500		SUBROUTINE UNPACK(K,M,N,I)
05600		COMMON/LL/L
05700	C  L IS FOR VIS. OR INVIS. LINES.
05800		DIMENSION I(1)
05900		N=I(K)
06000		L=0
06100		IF(N.LT.100000000)GO TO 2
06200		L=(N/100000000)*100000000
06300		N=N-L
06400	2	M=N/10000
06500		N=N-M*10000
06600		IF(M.GT.1000)M=1000-M
06700		IF(N.GT.1000)N=1000-N
06800		END
06900	
07000		SUBROUTINE GRIDS
07010		COMMON/RC/MCLEF(400),IST(4000)
07200		COMMON /RZ/RSZ,IPLT,RJB,CENTR
07210		EQUIVALENCE(GRID,IST(4000))
07216		DIMENSION LWRCS(9),IUPCS(8)
07232		DATA LWRCS/9,110281028,10280045,210045,211028,10281028
07243		1,210280017, 10030017,10031028/
07266		1,IUPCS/8,110281028,10280045,370045,371028,10281028
07274		1, 100041028, 40045/
07374		CALL POG2
07400		IF(GRID)GO TO 1
07510		IF(GRID.EQ.1)GO TO 2
07520		IF(GRID.EQ.3)GO TO 3
07530	C  NEXT IS UPPER CASE BOX -- GRID=2
07540		CALL RDRAW(2,IUPCS(1),IUPCS,RJB,CENTR)
07550		GO TO 1
07560	3	CALL RDRAW(2,LWRCS(1),LWRCS,RJB,CENTR)
07565	C  LOWER CASE BOX
07570		GO TO 1
07600	2	RB=32
07700		RC=35.*9./RSZ
07800		RD=78.*9./RSZ
07900		RA=2
08000	CC	IF(IPLT.LT.-1)GO TO 333
08100	C  TO SKIP LINES
08200		DO 30 L=-34,78,4
08300		RZ=L
08400		RE=RZ+CENTR
08500		IF(L.EQ.-2)GO TO 4
08520		IF(L.EQ.18)GO TO 4
08540		IF(L.EQ.38)GO TO 4
08560		IF(L.NE.58)GO TO 32
08600	4	RF=RE+1
08700		RG=RE+3
08800		CALL LINES(RJB-1.0,RG,3)
08900		CALL LINES(RJB+1.0,RF,2)
09000		CALL LINES(RJB+19.0,RG,3)
09100		CALL LINES(RJB+21.0,RF,2)
09200	32	XA=2
09300		XB=0
09400		IF(L.EQ.14)GO TO 6
09420		IF(L.NE.42)GO TO 5
09440	6	XA=20
09500	5	IF(L.EQ.-2)GO TO 8
09520		IF(L.EQ.26)GO TO 8
09540		IF(L.NE.54)GO TO 7
09560	8	XB=20
09600	7	CALL LINES(RJB-RA-XA,RE,3)
09700		CALL LINES(RJB+RB+XA,RE,2)
09800		CALL LINES(RJB+RB+XB,RE+2.0,3)
09900	30	CALL LINES(RJB-RA-XB,RE+2.0,2)
10000		DO 31 L=-2,32,4
10100		RZ=L
10200		RE=RZ+RJB
10300		CALL LINES(RE,CENTR-RC,3)
10400		CALL LINES(RE,CENTR+RD,2)
10500		CALL LINES(RE+2.0,CENTR+RD,3)
10600	31	CALL LINES(RE+2.0,CENTR-RC,2)
10700		CALL LINES(RJB-10.,CENTR-14.,3)
10800		CALL LINES(RJB,CENTR-14.,2)
10900		CALL LINES(RJB,CENTR-28.,3)
11000		CALL LINES(RJB-10.,CENTR-28.,2)
11100	1	CALL DPYOUT(2)
11200		CALL POG1
11300		END
11400	
11500		SUBROUTINE SHIFT(M,L,NN)
11600		DIMENSION M(1)
11700		COMMON/RC/MCLEF(400),IST(4000)
11800		EQUIVALENCE (KK,IST(2))
11900		IF(NN.EQ.'M')GO TO 5
11920		TYPE 7
11940		GO TO 6
12000	5	TYPE 1
12100	6	KK=2
12200		ACCEPT 2,H,V,SH,SV
12300		IF(SH.EQ.0)SH=1
12400		IF(SV.EQ.0)SV=1
12600	1	FORMAT(' MOVE HORIZ, VERT., SIZE H, SIZE V'/)
12700	2	FORMAT(4F)
12720	7	FORMAT(' TYPE DEGREES -- '$)
12800	CC	IF(L.GT.0)GO TO 10
12900	CC	L=-L
13000	CC	V=999.
13300	10	DO 3 K=1,L-1
13400		CALL UNPACK(K,J,N,M)
13500	CC	IF(V.NE.999)GO TO 4
13520		IF(NN.EQ.'M')GO TO 4
13600	C   ROTATION      DEGREES.
13700		X=J
13800		Y=N
13900		AX=ATAN2(Y,X)*57.2957768
14000		HYP=SQRT(X**2+Y**2)
14100		ROT=AX-H
14200	C  -H, SO ROTATION IS CLOCKWISE INSTEAD OF CNTRCLKWS.
14300	C  H=DEGREES
14400		X=HYP*COSD(ROT)
14500		Y=HYP*SIND(ROT)
14600		AX=.5
14700		IF(X)AX=-AX
14800	C  AX IS FOR ROUND-OFF
14900		J=X+AX
15000		AX=.5
15100		IF(Y)AX=-AX
15200		N=Y+AX
15300		GO TO 3
15400	
15500	4	J=H+J*SH
15600		N=V+N*SV
15700	3	CALL REPACK(K,J,N,M)
15800		END
15900	
16000		SUBROUTINE REPACK(K,M,N,I)
16100		COMMON/LL/L
16200		DIMENSION I(1)
16300		M=M*10000
16400		IF(M)M=10000000-M
16500		IF(N)N=1000-N
16600		M=M+L
16700		I(K)=M+N
16800		END
16900	
17000		SUBROUTINE BUP
17010		COMMON/RC/MCLEF(400),IST(4000)
17100		IST(2)=IST(2)-1
17200		CALL HYDPOG(1)
17300		CALL ACCPOG(1)
17400		END
17500	
17600		SUBROUTINE POG2
17700		COMMON /RC/MCLEF(3400),IST(1000)
18500		CALL DPYSET(2,IST,200)
18700		CALL DPYBRT(2)
18800		END
18900	
19000		SUBROUTINE POG1
19005		CALL HYDPOG(3)
19010		CALL SETPOG(1)
19100		CALL DPYBRT(4)
19200		END